# ============================================================
# * Copyright © hk. 2022-2025. All rights reserved.
# * File name: CMakeLists.txt
# * Author   : 苏木
# * Date     : 2025-05-22
# * Version  : 
# * Description: cmake version 3.16.3
# ============================================================
## https://cmake.com.cn/cmake/help/latest/guide/tutorial/index.html
## https://cmake.org/cmake/help/latest/

# 指定 CMake 的最低版本要求
# --------------------------------------------------
cmake_minimum_required(VERSION 3.10)


# 设置项目名称和使用的编程语言
# --------------------------------------------------
project(SPROJECT C)


# 指定可执行程序和源文件
# --------------------------------------------------
add_executable(app_demo.out main.c)


# Cmake中执行shell命令
# --------------------------------------------------
# execute_process(COMMAND <cmd1> [<arguments>]
#                 [COMMAND <cmd2> [<arguments>]]...  # 子进程命令行。
#                 [WORKING_DIRECTORY <directory>]    # 指定应该在哪个目录中执行命令。
#                 [TIMEOUT <seconds>]                # 如果在指定的时间内（以秒为单位计算，允许有小数位）子进程执行仍未完成，则将会被中断。
#                 [RESULT_VARIABLE <variable>]       # 包含进程运行的结果。这要么是一个整数表示执行成功，要么是一个带有错误条件的字符串。
#                 [RESULTS_VARIABLE <variable>]      # 变量将被设置为以分号分隔的列表形式包含所有进程的结果，按给定命令参数的顺序排列。每个条目都是对应子项的整数返回码或描述错误条件的字符串。
#                 [OUTPUT_VARIABLE <variable>]       # 包含执行命令的标准输出，由于命令的输出是通过管道传输的，因此只有最后一个命令的标准输出才会保存到OUTPUT_VARIABLE中。
#                 [ERROR_VARIABLE <variable>]        # 标准错误
#                 [INPUT_FILE <file>]      # 指定标准输入重定向的文件名。
#                 [OUTPUT_FILE <file>]     # 指定标准输出重定向的文件名。
#                 [ERROR_FILE <file>]      # 指定标准错误输出重定向的文件名。
#                 [OUTPUT_QUIET]           # 静默地忽略标准输出
#                 [ERROR_QUIET]            # 静默地忽略标准错误。
#                 [COMMAND_ECHO <where>]   # 正在运行的命令将被回送到<where>，而<where>将被设置为STDERR、STDOUT或NONE中的一个。
#                 [OUTPUT_STRIP_TRAILING_WHITESPACE] # 可以删除运行命令的标准输出中的任何尾随空格。
#                 [ERROR_STRIP_TRAILING_WHITESPACE]  # 可以删除运行命令的错误输出中的任何尾随空格。
#                 [ENCODING <name>]        # 适用于windows平台，编码名称有NONE、AUTO、ANSI、OEM、UTF8或UTF-8。
#                 [ECHO_OUTPUT_VARIABLE]   
#                 [ECHO_ERROR_VARIABLE]
#                 [COMMAND_ERROR_IS_FATAL <ANY|LAST|NONE>])

message(STATUS "[USER:TOP]==> ${CMAKE_VERSION} 获取主机git版本号")
# Git检测
find_package(Git QUIET)
set(GIT_VALID_REPO FALSE)

if(GIT_FOUND)
	# 获取git的版本号
    execute_process(
        COMMAND ${GIT_EXECUTABLE} --version
        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
        OUTPUT_VARIABLE HOST_GIT_VERSION
        OUTPUT_STRIP_TRAILING_WHITESPACE
        ERROR_QUIET
        RESULT_VARIABLE _git_version_check_ret
    )
	message(STATUS "[USER:TOP]GIT_EXECUTABLE   : ${GIT_EXECUTABLE}")
	message(STATUS "[USER:TOP]HOST_GIT_VERSION : ${HOST_GIT_VERSION}")
	message(STATUS "[USER:TOP]CMAKE_SOURCE_DIR : ${CMAKE_SOURCE_DIR}")
	message(STATUS "[USER:TOP]_git_version_check_ret : ${_git_version_check_ret}")
	if(_git_repo_check_ret EQUAL 0)
		message(STATUS "[USER:TOP]==> ${CMAKE_VERSION} 获取主机git版本号")
	else()
	endif()
endif()
message("")
